package com.winsdom.entity;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.io.Serializable;
import java.util.Date;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 合同主表
 * </p>
 *
 * @author 
 * @since 2025-05-12
 */
@Data
@Accessors(chain = true)
@TableName("contract")
public class Contract implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 合同ID
     */
    @TableId(value = "contract_id", type = IdType.AUTO)
    private Long contractId;

    /**
     * 角色类型: 1-业主, 2-租户
     */
    private Integer roleType;

    /**
     * 关联客户ID
     */
    private Long customerId;

    /**
     * 分类ID(资源)
     */
    private Integer categoryId;

    /**
     * 资源名称(联合全名)
     */
    private String resourceName;

    /**
     * 合同文件路径
     */
    private String documentPath;

    /**
     * 合同编号
     */
    private String contractNumber;

    /**
     * 计费周期: 1-自然月, 2-合同月
     */
    private Integer billingCycle;

    /**
     * 滞纳金(0：不收取 1：按比例收)
     */
    private Integer lateFeeType;

    /**
     * 生成账单后生产滞纳金(天)
     */
    private Integer lateFee;

    /**
     * 滞纳金比例(%)
     */
    private BigDecimal lateFeeScale;

    /**
     * 是否按盘内合并账单  0（false） 1(true)
     */
    private Boolean combineBills;

    /**
     * 合同状态: 1-有效, 0-无效
     */
    private Integer contractStatus;

    /**
     * 失效原因
     */
    private String invalidReason;

    /**
     * 生成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate generateDate;

    /**
     * 失效日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate invalidDate;


}
